package com.keyware.kd.service.itf.number;

import java.util.List;
import java.util.Properties;

import com.keyware.kd.repository.entity.number.NumberBuilder;

/**
 * 
 * 此类描述的是：   	生成编号
 * @author: 赵亚舟   
 * @version: 2016年7月5日 上午9:35:46
 */
public interface NumberBuilderService {

	int deleteByPrimaryKey(String numberId);

    int insert(NumberBuilder record);

    int insertSelective(NumberBuilder record);

    NumberBuilder selectByPrimaryKey(String numberId);

    int updateByPrimaryKeySelective(NumberBuilder record);

    int updateByPrimaryKey(NumberBuilder record);
	
	
	/**
	 * 
	 * @author: 巨李岗
	 * @Title: getUserNumber(
	 * @Description: 获取userNumber
	 * @return
	 * @return String
	 */
	public String getUserNumber();
	
	/**
	 *
	 * @author: 巨李岗
	 * @Title: updateNumber
	 * @param  codeType
	 * @Description: 编号+1
	 * @return
	 * @return String
	 */
	public Integer updateNumber(String codeType);
	
	/**
	 * 
	 * @author: 巨李岗
	 * @Title: getNumber
	 * @param  codeType
	 * @Description: 获取+1后的编号
	 * @return
	 * @return String
	 */
	public Integer getNumber(String codeType);
	
	/**
	 * 客户标识的改变方式不同于其他参数
	 * @Description: 获取客户标识
	 * @author 巨李岗
	 * @date 2017年8月22日 下午4:45:25
	 * @param codeType
	 * @return Integer
	 */
	public String getCustomerId();
	
	/**
	 * 
	 * @Description: 保存或更新客户标识
	 * @author 巨李岗
	 * @date 2017年8月22日 下午4:48:51
	 * @param codeType
	 * @return Integer
	 */
	public boolean saveOrUpdateCustomerId(String customerId, String projectName);
	
	/**
	 * 
	 * @Title: saveConfigure
	 * @Description: 保存配置管理
	 * @param number
	 * @author 赵亚舟
	 * @return void
	 */
	public void saveConfigure(Integer number);
	
	/**
	 * 
	 * @Title: checkNumberValue
	 * @Description: 校验值是否是否正确,如果没有这个类型返回false
	 * @param numberId	类型字符串
	 * @param trueValue	正确值
	 * @return
	 * @author 赵亚舟
	 * @return Boolean
	 */
	public Boolean checkNumberValue(String numberId,String trueValue);
	
	/**
	 * 
	 * @Title: checkConfigure
	 * @Description: 判断是否开启了配置管理
	 * @return
	 * @author 赵亚舟
	 * @return Boolean
	 */
	public  Boolean checkConfigure();
	
	/**
	 * 
	 * @Title: selectByInfo
	 * @Description: 根据属性值查询
	 * @param record
	 * @return
	 * @author 赵亚舟
	 * @return List<Number>
	 */
	List<NumberBuilder> selectByInfo(NumberBuilder record);
	
	/**
	 * 
	 * @Title: getProjectTypeParameter
	 * @Description: 获取配置文件信息
	 * @return
	 * @author 李军荣
	 * @return Properties
	 */
	public Properties getProjectTypeParameter();
	
}
